#include<iostream>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
#include<cerrno>
#include<fcntl.h>
#include"all.hpp"
using namespace std;




int main()
{
    umask(0); //只会影响当前进程

    int n =mkfifo(fifoname.c_str(),mode);
    if(n!=0)
    {
        cout<<errno<<":"<<strerror(errno)<<endl;
        return 1;
    }
    cout<<"管道链接成功"<<endl;
    //开启管道
    int rfd=open(fifoname.c_str(),O_RDONLY);//获得fd
    if(rfd<0)
    {
        cout<<errno<<":"<<strerror(errno)<<endl;
        return 3;
    }
    cout<<"打开文件成功，可以开始通信"<<endl;

    //通信
    char buf[NUM];
    cout<<"客户端：";
    char ch;
    while(true)
    {
        buf[0]=0;
        ssize_t n =read(rfd,buf,sizeof(buf)-1);
        //ssize_t n =read(rfd,(char*)&ch,sizeof(ch));
        if(n>0)//连续输入版本
        {
            // buf[n]=0;
            // if(buf[0]=='\n')
            // {
            //     cout<<endl;
            // }
            // else
            // {
            //     printf("%c",buf[0]);
            // }
            
            // fflush(stdout);
            cout<<buf<<endl;
        }
        else if(n==0)
        {
            cout<<"客户端退出"<<endl;
            break;
        }
        else 
        {
            break;
        }
    }
    close(rfd);

    unlink(fifoname.c_str());//删除


    return 0;
}